import {mapGetters, mapMutations, mapActions} from 'vuex';
// import {lazyAMapApiLoaderInstance} from 'vue-amap';
import store from '@/store/store.js';
import API from '../request/api'
import wx from 'weixin-js-sdk'

export const commonMixin = {
    computed: {
        ...mapGetters(['userInfo', 'globaLoadingShow', 'token', 'tokenType'])
    },
    methods: {
        //图片全部加载完毕后刷新slider,确保正确渲染dom
        refreshSilider(totalCount, refname) {
            if (!this.currentCount) {
                this.currentCount = 0;
            }
            this.currentCount++;
            if (this.currentCount >= totalCount) {
                setTimeout(() => {
                    this.$refs[refname].refresh();
                }, 500);
            }
        },
        ...mapMutations(['showGlobaLoading', 'hideGlobaLoading']),
        ...mapActions([])
    }
};

export const sysMixin = {
    computed: {
        ...mapGetters(['systemData', 'system'])
    }
};
export const frontMixin = {
    computed: {
        ...mapGetters(['frontBrand'])
    }
};

export const productMixin = {
    computed: {
        minPrice() {
            const sku = this.product.sku;
            if (!sku || !sku.length) {
                return;
            }
            const prices = sku.map((item) => {
                return parseFloat(item.price);
            });
            return Math.min(...prices);
        },
        ...mapGetters([])
    },
    methods: {
        ...mapActions([])
    }
};

export const wxMixin = {
    methods: {
        prepareWxShare(shareUrl, product) {
            console.log('shareUrl', shareUrl)
            console.log('product', product)
            this.request.get(API.getWeChatSDKInfo, {url: encodeURI(document.location.protocol + '//' + document.location.host + this.$route.fullPath)}).then((res) => {
                console.log(res, '路由')
                console.log(this.$route.fullPath, '路由')
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                    appId: res.appid, // 必填，公众号的唯一标识
                    timestamp: res.timestamp, // 必填，生成签名的时间戳
                    nonceStr: res.noncestr, // 必填，生成签名的随机串
                    signature: res.signature,// 必填，签名
                    jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"] // 必填，需要使用的JS接口列表
                });

                wx.error(function (res) {
                    console.log(res, '2222222222')
                    console.log('微信校验错误，请点击右上角刷新后重试')
                });
            }, (err) => {
                this.isLoading = false;
            });

            let that = this;
            wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
                console.log(product, '啦啦啦啦')
                // 朋友圈
                wx.onMenuShareTimeline({
                    title: product.name, // 分享标题
                    desc: product.dec, // 分享描述
                    link: shareUrl, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: product.pic, // 分享图标
                    success: function () {
                        // 设置成功
                        if (product.gid && this.recordCount === 0) {
                            that._recordShare();
                        }
                    }
                })

                // 发送给微信朋友
                wx.onMenuShareAppMessage({
                    title: product.name, // 分享标题
                    desc: product.dec, // 分享描述
                    link: shareUrl, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: product.pic, // 分享图标
                    success: function () {
                        // 设置成功
                        if (product.gid && this.recordCount === 0) {
                            that._recordShare();
                        }
                    }
                });
            });
        }
    }
};

// export const locationMixin = {
//     computed: {
//         ...mapGetters(['userInfo', 'location', 'currentCity', 'currentCounty', 'lastCity'])
//     },
//     methods: {
//         // 精确定位，获取经纬度、城市等，存入vuex
//         async getCurrentPositon() {
//             await lazyAMapApiLoaderInstance.load();
//             var geolocation = new AMap.Geolocation({
//                 // 是否使用高精度定位，默认：true
//                 enableHighAccuracy: false,
//                 // 设置定位超时时间，默认：无穷大
//                 timeout: 10000,
//                 // 定位按钮的停靠位置的偏移量，默认：Pixel(10, 20)
//                 buttonOffset: new AMap.Pixel(0, 0),
//                 //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
//                 zoomToAccuracy: true,
//                 //  定位按钮的排放位置,  RB表示右下
//                 buttonPosition: 'RB'
//             });
//
//             geolocation.getCurrentPosition((status, result) => {
//                 if (result && result.position) {
//                     console.log('getCurrentPosition', result);
//                     store.dispatch('updateLocaton', result);
//                 } else {
//                     console.log('getCurrentPosition-no', status, result);
//                 }
//             });
//         },
//         //获取定位城市
//         async getLocationCity() {
//             await lazyAMapApiLoaderInstance.load();
//             AMap.plugin('AMap.CitySearch', () => {
//                 const citySearch = new AMap.CitySearch();
//                 citySearch.getLocalCity((status, result) => {
//                     if (status === 'complete' && result.info === 'OK') {
//                         console.log('getLocationCity', result);
//                         store.dispatch('updateCity', {
//                             adcode: result.adcode,
//                             name: result.city
//                         });
//                     }
//                 });
//             });
//         },
//         //获取定位城市
//         async getLocationAddress() {
//             await lazyAMapApiLoaderInstance.load();
//             AMap.plugin('AMap.Geocoder', () => {
//                 var geocoder = new AMap.Geocoder({
//                     // city 指定进行编码查询的城市，支持传入城市名、adcode 和 citycode
//                     city: '0546'
//                 });
//
//                 var lnglat = [118.538413, 37.457395];
//
//                 geocoder.getAddress(lnglat, function(status, result) {
//                     if (status === 'complete' && result.info === 'OK') {
//                         // result为对应的地理位置详细信息
//                         console.log('getLocationAddress--->', result);
//                     }
//                 });
//             });
//         },
//         ...mapMutations(['setCurrentCity', 'setCurrentCounty'])
//     }
// };
